package dletc.Linked;

import java.util.Deque;
import java.util.LinkedList;

/**
Deque: 双端队列
    
                包：java.util.Deque
                 双端队列：  两端都能进出
                 当只从一端进入队列时，符合栈的特征： 先进后出
          
       push: 进栈
       pop:  弹栈

				 入口↓            出口↑
				 |   ●        |
				 |   ●        |
				 |   ●        |
				 |   ●        |
				 |   ●        |
				 |------------|
*/
public class Demo02 {

	public static void main(String[] args) {
		
		Deque<String> deque = new LinkedList<String>();
		//进栈： 进入的顺序和显示的顺序相反
		deque.push("AA");
		deque.push("BB");
		deque.push("CC");
		deque.push("DD");
		
		System.out.println(deque);
		
		//弹栈: 符合后进先出的原则，所以弹出的是DD
		String pop = deque.pop();
		System.out.println(pop);
		System.out.println(deque);
		
		/**
		   * 队列的遍历：
		   * 	队列用增强for循环可以遍历无数字，数据并不会被取出
		   * 	队列用while(queue.size() > 0){
			 	System.out.println(queue.poll());}只能遍历一次，因为数据已经被取
		   */
		
		for (String string : deque) {
			System.out.println(string);
		}
		
		System.out.println(deque);
		
		while(deque.size() > 0){
			System.out.println(deque.pop());
		}
		
		System.out.println(deque);

	}

}
